home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1996-03-04 | 7.3 KB | 172 lines | [ TEXT/KAHL]
/// Defines used in common between Instant Access and Plug Ins #ifndef __PlugInDefines__ #define __PlugInDefines__ // error codes enum { kPlugInNotFoundError = -1000, kMenuItemNotFoundError, kNilSelectedItemReferenceError }; // Classifications of menu items #define kMiscellaneousClassification 'Misc' #define kFileOperationClassification 'File' #define kContainerOperationClassification 'Fldr' // Defines and macros for easy interpretation of Catalog Information #define kIsLockedBit (1 << 0) #define kIsResourceForkOpenBit (1 << 2) #define kIsDataForkOpenBit (1 << 3) #define kIsFolderBit (1 << 4) #define kIsOpenBit (1 << 7) #define kIsAliasBit (1 << 15) #define ItemIsFolder(info) (info.hFileInfo.ioFlAttrib & kIsFolderBit && info.dirInfo.ioDrDirID != 2) #define ItemIsVolume(info) (info.hFileInfo.ioFlAttrib & kIsFolderBit && info.dirInfo.ioDrDirID == 2) #define ItemIsContainer(info) (ItemIsFolder(info) || ItemIsVolume(info)) #define ItemIsAlias(info) (!(info.hFileInfo.ioFlAttrib & kIsFolderBit) && info.hFileInfo.ioFlFndrInfo.fdFlags & kIsAliasBit) #define ItemIsApplication(info) (!(info.hFileInfo.ioFlAttrib & kIsFolderBit) && info.hFileInfo.ioFlFndrInfo.fdType == 'APPL') #define ItemIsDocument(info) (!(info.hFileInfo.ioFlAttrib & kIsFolderBit) && !(info.hFileInfo.ioFlFndrInfo.fdFlags & kIsAliasBit) && info.hFileInfo.ioFlFndrInfo.fdType != 'APPL') #define ItemIsFile(info) (ItemIsAlias(info) || ItemIsApplication(info) || ItemIsDocument(info)) // Flag Defines for filtering out selected item is a DoForEachSelectedItem CallBack // Note that we are defining these finder item groups to be mutually exclusive. So while // normally you'd think of a Volume as a certain type of folder, here we treat them // as independent entities. So, if you wanted to include access to both, you'd // use kIncludeAllContainers. A folder is not a volume. A volume is not a folder. // Same thing goes for files: a document is not an application, nor an alias. An alias is not // an application nor a document and an application is not a document nor an alias. #define kIncludeFolders (1 << 0) #define kIncludeVolumes (1 << 1) #define kIncludeApplications (1 << 2) #define kIncludeDocuments (1 << 3) #define kIncludeAliases (1 << 4) #define kIncludeAllFiles kIncludeDocuments | kIncludeApplications | kIncludeAliases #define kIncludeAllSelectedItems kIncludeAllFiles | kIncludeFolders | kIncludeVolumes #define kIncludeAllContainers kIncludeFolders | kIncludeVolumes // Definition of a menu item #define kMenuItemTextSize 128 #define kMenuItemInformationVersionOne 1 #define kPlugInInformationVersionOne 1 #define kSelectedItemVersionOne 1 typedef struct { short version; OSType classification, owningPlugInType; unsigned char text[kMenuItemTextSize]; short type, id, enabled, style, mark, hasSubMenu; MenuHandle subMenu; long refCon; } MenuItemInformation; // Opaque Definition of a selected item typedef void SelectedItemReference; // Miscellaneous Defines enum { kTextMenuItemType, kDividerMenuItemType }; // communication structures typedef struct { short menuID, itemNumber; } MenuSelectResultSubStructure; typedef union { long longResult; MenuSelectResultSubStructure wordResult; } MenuSelectResultStructure; typedef pascal void (*AddMenuItemProcedurePtr)(MenuItemInformation *menuItem); typedef pascal short (*GetPlugInFileSpecProcedurePtr)(OSType plugInType, FSSpec *fileSpec); typedef pascal short (*CountSelectedItemsProcedurePtr)(void); typedef pascal SelectedItemReference *(*GetNthSelectedItemReferenceProcedurePtr)(short index); typedef pascal short (*SelectFinderMenuItemProcedurePtr)(unsigned char *menuTitle, unsigned char *menuItemText); typedef pascal short (*GetAvailableSubMenuIDProcedurePtr)(void); typedef pascal MenuHandle (*FindMenuProcedurePtr)(unsigned char *menuTitle); typedef pascal MenuSelectResultStructure (*FindMenuItemProcedurePtr)(unsigned char *menuTitle, unsigned char *menuItemText); typedef pascal short (*GetSelectedItemCatalogInformationProcedurePtr)(SelectedItemReference *reference, CInfoPBRec *information); typedef pascal short (*GetSelectedItemFileSpecProcedurePtr)(SelectedItemReference *reference, FSSpec *fileSpec); typedef pascal void (*DoForEachSelectedItemProcedurePtr)(ProcPtr doForSelectedItem, long iterationFlags, long userInformation); typedef pascal short (*RevealFileInFinderProcedurePtr)(FSSpec *fileSpec); typedef pascal short (*OpenFileProcedurePtr)(FSSpec *fileSpec); typedef pascal short (*DisplayMessageProcedurePtr)(unsigned char *message); typedef pascal void (*ForceRedrawOfContainingFinderWindowProcedurePtr)(FSSpec *fileSpec); typedef pascal short (*ReportErrorProcedurePtr)(short error); typedef struct { AddMenuItemProcedurePtr AddMenuItem; GetPlugInFileSpecProcedurePtr GetPlugInFileSpec; CountSelectedItemsProcedurePtr CountSelectedItems; GetNthSelectedItemReferenceProcedurePtr GetNthSelectedItemReference; SelectFinderMenuItemProcedurePtr SelectFinderMenuItem; GetAvailableSubMenuIDProcedurePtr GetAvailableSubMenuID; FindMenuProcedurePtr FindMenu; FindMenuItemProcedurePtr FindMenuItem; GetSelectedItemCatalogInformationProcedurePtr GetSelectedItemCatalogInformation; GetSelectedItemFileSpecProcedurePtr GetSelectedItemFileSpec; DoForEachSelectedItemProcedurePtr DoForEachSelectedItem; RevealFileInFinderProcedurePtr RevealFileInFinder; DisplayMessageProcedurePtr DisplayMessage; ForceRedrawOfContainingFinderWindowProcedurePtr ForceRedrawOfContainingFinderWindow; ReportErrorProcedurePtr ReportError; OpenFileProcedurePtr OpenFile; } InstantAccessInformation, *InstantAccessInformationPtr; typedef pascal void (*InitializeAtIdleProcedurePtr)(InstantAccessInformation *information); typedef pascal void (*PrepareMenuProcedurePtr)(InstantAccessInformation *information, short asPreview); typedef pascal void (*CleanUpAfterMenuSelectProcedurePtr)(InstantAccessInformation *information, short fromPreview); typedef pascal void (*HandleMenuItemSelectedProcedurePtr)(InstantAccessInformation *information, MenuItemInformation *menuItem); typedef pascal void (*HandleSubMenuItemSelectedProcedurePtr)(InstantAccessInformation *information, short menuID, short menuItemNumber); typedef pascal void (*HandleIdleProcedurePtr)(InstantAccessInformation *information); typedef pascal short (*DoForSelectedItemProcedurePtr)(InstantAccessInformationPtr information, SelectedItemReference *reference, long userInformation); typedef pascal void (*DisplayAboutBoxProcedurePtr)(InstantAccessInformationPtr information); typedef pascal void (*ConfigureProcedurePtr)(InstantAccessInformationPtr information); typedef struct { short version; OSType plugInType; InitializeAtIdleProcedurePtr InitializeAtIdle; PrepareMenuProcedurePtr PrepareMenu; CleanUpAfterMenuSelectProcedurePtr CleanUpAfterMenuSelect; HandleMenuItemSelectedProcedurePtr HandleMenuItemSelected; HandleSubMenuItemSelectedProcedurePtr HandleSubMenuItemSelected; HandleIdleProcedurePtr HandleIdle; DisplayAboutBoxProcedurePtr DisplayAboutBox; ConfigureProcedurePtr Configure; } PlugInInformation; #endif